import datetime
from applications.extensions import db
from sqlalchemy import UniqueConstraint
# 创建中间表
supplierRawYP_Raw = db.Table(
    "供应商档案_原料_饮片_原料",  # 中间表名称
    db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='ID'),  # 主键
    db.Column("Supplier_id", db.Integer, db.ForeignKey("供应商档案_原料_饮片.id"), comment='供应商_编号'),  # 属性 外键
    db.Column("Raw_id", db.Integer, db.ForeignKey("商品档案_原料_饮片.id"), comment='物料_编号'),  # 属性 外键
)
class SupplierRawYPModel(db.Model):
    __tablename__ = '供应商档案_原料_饮片'
    id = db.Column(db.Integer, primary_key=True, comment='ID') #默认自增primary_key
    供应商名 = db.Column(db.String(255), comment='供应商名', nullable=False)
    简拼 = db.Column(db.String(25), comment='简拼', default='')
    全拼 = db.Column(db.String(255), comment='规格', default='')

    身份信息 = db.Column(db.String(255), comment='身份信息', nullable=False,unique=True)
    状态 = db.Column(db.Integer, default=0, comment='启用|停用')

    注册地址 = db.Column(db.String(255), comment='注册地址', default='')
    归属类别 = db.Column(db.String(255), comment='归属类别', default='')
    联系人 = db.Column(db.String(255), comment='联系人', nullable=False)
    联系电话 = db.Column(db.String(255), comment='联系电话', default='')
    最后一次审计日期 = db.Column(db.Date, default=datetime.date.today(), comment='最后一次审计日期')
    有效期至 = db.Column(db.Date, default=datetime.date.today(), comment='最后一次审计日期')
    审计周期 = db.Column(db.Integer, comment='审计周期', default=12)
    备注 = db.Column(db.String(255), comment='备注', default='')


    仓库名称 = db.Column(db.String(255), comment='仓库名称', default='')
    仓库地址 = db.Column(db.String(255), comment='仓库地址', default='')
    仓库联系人 = db.Column(db.String(255), comment='仓库联系人', default='')
    仓库联系电话 = db.Column(db.String(255), comment='仓库联系电话', default='')
    仓库名称2 = db.Column(db.String(255), comment='仓库名称2', default='')
    仓库地址2 = db.Column(db.String(255), comment='仓库地址2', default='')
    仓库联系人2 = db.Column(db.String(255), comment='仓库联系人2', default='')
    仓库联系电话2 = db.Column(db.String(255), comment='仓库联系电话2', default='')

    邮箱 = db.Column(db.String(255), comment='邮箱', default='')
    企业网址 = db.Column(db.String(255), comment='企业网址', default='')
    开户行 = db.Column(db.String(255), comment='开户行', default='')
    收款单位 = db.Column(db.String(255), comment='收款单位', default='')
    账号 = db.Column(db.String(255), comment='账号', default='')
    质保体系评估结果 = db.Column(db.String(255), comment='质保体系评估结果', default='D')

    create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
    update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now,
                          comment='创建时间')

    goods = db.relationship('RawYPModel', secondary="供应商档案_原料_饮片_原料", backref=db.backref('supperRawYp'), lazy='dynamic')
    files = db.relationship('SupplierRawYPFilesModel',  backref=db.backref('supperRawYp'),
                            lazy='dynamic')
    def to_dict(self):
        return {column.name: getattr(self, column.name) for column in self.__table__.columns}



class SupplierRawYPFilesModel(db.Model):
    __tablename__ = '供应商档案_原料_饮片_附件'
    id = db.Column(db.Integer, primary_key=True, comment='ID') #默认自增primary_key
    data_label = db.Column(db.String(255), nullable=False, comment='文件名称')
    href = db.Column(db.String(255), comment='文件路由路径')
    mime = db.Column(db.CHAR(255), nullable=False, comment='文件类型')
    size = db.Column(db.CHAR(30), nullable=False, comment='文件大小')
    enable = db.Column(db.Integer, comment='再用|停用', default=0)
    expiration_time = db.Column(db.Date, default=datetime.datetime.now, comment='过期日期')
    description = db.Column(db.String(255),  comment='描述')
    create_time = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
    update_time = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now,
                            comment='更新时间')
    Supplier_raw_id = db.Column(db.Integer,db.ForeignKey("供应商档案_原料_饮片.id"), comment='供应商_编号')

    def to_dict(self):
        return {column.name: getattr(self, column.name) for column in self.__table__.columns}


